/*
 * @Author: 周艳凯 484894717@qq.com
 * @Date: 2025-03-05 11:17:23
 * @LastEditors: 周艳凯 484894717@qq.com
 * @LastEditTime: 2025-04-08 18:26:38
 * @FilePath: \BusStopBoard.Webd:\360MoveData\Users\75041\Desktop\uniapp框架\Stationsystem\src\utils\request.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import Request from 'luch-request'; //npm下载引入luch-request

import store from '../stores/index'
// const api = import.meta.env.VITE_BASE_URL;

const api = store.state.apiUrl

console.log(store.state.apiUrl,'我是13221')
// import qs from 'qs'
const http = new Request({
    baseURL: api, //设置请求的base url
    timeout: 30000, //超时时长30秒,
    header: {
        'Content-Type': 'multipart/form-data;application/json;charset=UTF-8;',
    },
});

//请求拦截器
http.interceptors.request.use(
    (config) => {
        console.log(config, '我是config');
        // 可使用async await 做异步操作
        const token = uni.getStorageSync('token');
        if (token) {
            // config.header.common['Authorization'] = 'Bearer ' + token;
        }

        if (config.method === 'POST') {
            config.data = JSON.stringify(config.data)
        }
        return config;
    },
    (error) => {
        return Promise.resolve(error);
    },
);

// 响应拦截器
http.interceptors.response.use(
    (response) => {
        // 成功响应拦截（HTTP状态码2xx）
        console.error(response, '我是大声点');
        var status = response.data.code;
        	// 处理未进行规范化处理的
		if (status >= 400) {
			return Promise.reject('Request Error.')
		}
        return response;
    },
    (error) => {
        const { errMsg } = error;

        if (errMsg && errMsg.startsWith('request:fail')) {
            uni.showToast({
                title: '网络连接不可用，请检查后重试'+errMsg,
                icon: 'none',
                duration: 2000,
            });
            return Promise.reject(error);
        }
        // 处理请求超时
        if (errMsg && errMsg.includes('timeout')) {
            uni.showToast({
                title: '请求超时，请稍后再试',
                icon: 'none',
                duration: 2000,
            });
            return Promise.reject(error);
        }
        // 处理服务器错误
        if (error.statusCode >= 500) {
            uni.showToast({
                title: '服务器繁忙，请稍后再试',
                icon: 'none',
                duration: 2000,
            });
            return Promise.reject(error);
        }

        //未登录时清空缓存跳转
        if (error.statusCode == 401) {
            uni.clearStorageSync();
            uni.switchTab({
                url: '/pages/index/index.vue',
            });
        }

        console.log(errMsg, '我才是error');

        uni.showToast({
            title: errMsg,
            duration: 2000,
        });
        return Promise.reject(error);
    },
);
export default http;
